Differential client-side encryption of information originating from a client

ABSTRACT

A method may include allocating a number of public keys, where each respective public key is allocated to a respective entity of a number of entities; storing a number of private keys, where each respective private corresponds to a respective public key; storing one or more decryption algorithms, where each respective decryption algorithm is configured to decrypt data previously encrypted using at least one encryption algorithm of the encryption algorithms. Each respective encryption algorithm may be configured to encrypt data using at least one public key. Each respective decryption algorithm may be configured to decrypt data using at least one private key. The method may include receiving encrypted data, where the encrypted data is encrypted using a first public key and a first encryption algorithm, and the encrypted data is provided over a network.

RELATED APPLICATIONS

The present application is a continuation of U.S. application Ser. No.13/633,106, entitled “Differential Client-Side Encryption of InformationOriginating from a Client” and filed on Oct. 1, 2012 claims priority toU.S. Provisional Application No. 61/541,875 entitled “Systems andMethods for Differential Client-Side Encryption of InformationOriginating from a Client” and filed Sep. 30, 2011, the contents of eachof which are hereby incorporated by reference in its entirety.

BACKGROUND

Information such as personal data and other sensitive information may bepassed across a network such as the Internet, for example to providecredential information, payment information, or personal accountmanagement information. To protect sensitive information, theinformation can be transmitted over a secure transmission connection,such as Transport Layer Security (TLS) or Secure Socket Layer (SSL).

To secure information from unauthorized review, the information can bedigitally encrypted. One example of digital encryption is public keycryptography. In the public key cryptography scheme, two separate butmathematically-connected keys (e.g., numeric values) are used to securethe information. The first, a public key, is used to encrypt the datausing an encryption algorithm. The second, a private key, can be used bythe receiver of the data to decrypt the encrypted information. Thereceiver supplies the sender with the public key such that the sender iscapable of securely transmitting information to the receiver.

The receiver of sensitive information may be obligated to secure theprivacy of the user from unauthorized access to the sensitiveinformation. Information may be sensitive if the information isconfidential (e.g., industry and/or professional standards indicate thatonly designated parties should have access to the information).Information may be sensitive if a party incurs regulatory obligationsfor handling the information due to exposure to the information.Information may be sensitive if a party incurs potential liability dueto handling of and/or exposure to the information.

The receiver of the sensitive information, in some circumstances, mayrequest the sensitive information from the user, not for use by therequestor, but for processing by a third party, such as a credit cardsystem or a health insurance authorization system. There is a desire fora method and apparatus capable of enabling the conveyance of sensitiveinformation through the system of the requestor without the requestorhaving access to the contents of the conveyance. If the requestor isincapable of rendering and/or interpreting the sensitive information,the requestor may avoid obligation to protect the sensitive information.

SUMMARY

In one aspect, the present disclosure is directed to a method includingallocating, by a processor of a first computing device, a number ofpublic keys, where each respective public key of the number of publickeys is allocated to a respective entity of a number of entities. Themethod may include storing, in a memory of the first computing device, anumber of private keys, where each respective private key of the numberof private keys corresponds to a respective public key of the number ofpublic keys. The method may include storing, in the memory of the firstcomputing device, one or more decryption algorithms, where eachrespective decryption algorithm of the one or more decryption algorithmsis configured to decrypt data previously encrypted using at least oneencryption algorithm of one or more encryption algorithms. Eachrespective encryption algorithm of the one or more encryption algorithmsmay be configured to encrypt data using at least one public key of thenumber of public keys. Each respective decryption algorithm of the oneor more decryption algorithms may be configured to decrypt data using atleast one private key of the number of private keys. The method mayinclude receiving encrypted data, where the encrypted data is encryptedusing a first public key of the number of public keys and a firstencryption algorithm of the one or more encryption algorithms, and theencrypted data is provided over a network. The method may includedetermining, by the processor of the first computing device, a firstprivate key of the number of private keys, where the first private keycorresponds to the first public key, and the first public key isallocated to a first entity of the number of entities. The method mayinclude decrypting, by the processor of the first computing device, theencrypted data using the first private key and at least one decryptionalgorithm of the one or more decryption algorithms, where decrypted datais obtained by decrypting the encrypted data. The method may includeproviding a portion of the decrypted data for processing by a processingengine, where a second computing device includes the processing engine.The method may include receiving a processing result generated by theprocessing engine, where the processing result relates to the portion ofthe decrypted data. The method may include providing, over the network,the processing result to the first entity.

In some embodiments, the method may further include, prior to providingthe portion of the decrypted data for processing by the processingengine, queueing, by the processor of the first computing device, thedecrypted data for processing.

The method may further include, prior to receiving the encrypted data,receiving a download request for the first encryption algorithm, wherethe download request is received across the network from a thirdcomputing device, and providing the first encryption algorithm, via thenetwork. to the third computing device. The download request may includea hypertext transfer protocol request. The method may include storing,in the memory of the first computing device, the one or more encryptionalgorithms as one or more encryption subprograms, where providing thefirst encryption algorithm includes providing a first encryptionsubprogram of the one or more encryption subprograms, where the firstencryption subprogram includes the first encryption algorithm. The firstencryption subprogram may include runtime interpreted instructions.

In some embodiments, the method may include storing at least one of thedecrypted data and the encrypted data in a storage archive accessible tothe first computing device. The method may include receiving, over thenetwork, unencrypted data, where the unencrypted data is related to theencrypted data, and providing a portion of the unencrypted data forprocessing by the processing engine, where the portion of theunencrypted data is provided with the portion of the decrypted data.

In some embodiments, the method may further include receiving, over thenetwork, an indication of a type of processing to be performed on theencrypted data, where the indication of the type of processing isprovided by a third computing device controlled by the first entity. Thetype of processing may include at least one of a credit cardauthorization and a background check. The encrypted data may include oneor more of credit card information, medical history information, SocialSecurity number, bank account number, and driver's license number. Theencrypted data may be provided over the network from a third computingdevice controlled by the first entity, and the first entity may beincapable of decrypting the encrypted data.

In one aspect, the present disclosure describes a method includingstoring, in a memory of a first computing device, one or more encryptionalgorithms; providing, to a requestor across a network, a firstencryption algorithm of the one or more encryption algorithms; andstoring, in the memory of the first computing device, one or moredecryption algorithms, where each respective decryption algorithm of theone or more decryption algorithms is configured to decrypt datapreviously encrypted using at least one encryption algorithm of the oneor more encryption algorithms. The method may include receiving aprocessing request, where the processing request includes encrypteddata, non-encrypted data, and an indication of a type of processing tobe performed, where the processing request is provided over a networkfrom a second computing device controlled by an entity, and theencrypted data is encrypted using the first encryption algorithm. Themethod may include determining, by a processor of the first computingdevice, that the encrypted data is associated with the entity;determining, by the processor of the first computing device, a firstdecryption algorithm of the one or more decryption algorithms;decrypting, by the processor of the first computing device, theencrypted data using the first decryption algorithm, where decrypteddata is obtained by decrypting the encrypted data; determining, by theprocessor of the first computing device, a processing engine configuredto process the decrypted data using the type of processing; andproviding, via a second network, a portion of the decrypted data and aportion of the unencrypted data to a third computing device, where thethird computing device includes the processing engine. The method mayinclude receiving a processing result from the third computing device,and providing the processing result to the second computing device.

In some embodiments, the first encryption algorithm may be anasymmetrical encryption algorithm. The method may further includeallocating, by the processor of the first computing device, a public keyto the entity; providing the public key to the second computing device,where the encrypted data is encrypted using the public key; and storing,in the memory of the first computing device, a private key. The privatekey may be paired with the public key, and decrypting the encrypted datamay include decrypting using the private key.

In one aspect of the present disclosure, a method may include storing,in a memory of a first computing device, one or more encryptionalgorithms as one or more encryption subprograms; receiving, via anetwork, a download request for a first encryption subprogram of the oneor more encryption subprograms; providing, via the network, the firstencryption subprogram; and receiving, via the network, a processingrequest, where the processing request includes encrypted data, where theencrypted data is encrypted using the first encryption subprogram. Themethod may include determining, by a processor of the first computingdevice, that the encrypted data is associated with an entity;determining, by the processor of the first computing device, a firstdecryption algorithm, wherein the first decryption algorithm isconfigured to decrypt the encrypted data; and decrypting, by theprocessor of the first computing device, the encrypted data using thefirst decryption algorithm, where decrypted data is obtained bydecrypting the encrypted data. The method may include determining, bythe processor of the first computing device, a processing engine forprocessing the decrypted data; providing, via a second network, aportion of the decrypted data to a second computing device, where thesecond computing device includes the processing engine; receiving aprocessing result from the second computing device; and providing,across the network, to a third computing device, the processing result,where the third computing device is controlled by the entity.

The processing request may be received from the third computing device.The processing result may include an indication of at least one ofapproval and denial. The download request may be received from a fourthcomputing device controlled by an end user, where the fourth computingdevice is different from the second computing device and the thirdcomputing device.

In one aspect, the present disclosure describes a method includingreceiving a public key allocated by a service provider for use by anentity, where the service provider maintains a private key paired to thepublic key; determining, by a processor of a first computing device, aninteractive program including the public key; and providing theinteractive program for an end user, where the interactive program isconfigured to enable a processor of a second computing device to encryptdata using the public key, where the second computing device iscontrolled by the end user. The method may include receiving encrypteddata from the second computing device, across a first network, where theprocessor of the second computing device encrypted the encrypted datausing the public key; forwarding the encrypted data to the serviceprovider, across a second network, where the service provider isconfigured to determine the private key and decrypt the encrypted data,and the first computing device lacks access to the unencrypted data; andreceiving, from the service provider, a processing result related to thedecryption of the encrypted data.

The interactive program may be a mobile computing device application,and the second computing device may be a mobile computing device, wherethe mobile computing device application is configurable to install uponthe processor of the second computing device.

The interactive program may contain instructions that, when executed,cause the processor of the second computing device to encrypt data usingthe public key. The interactive program may contain instructions that,when executed, further cause the processor of the second computingdevice to download an encryption subprogram from one of the entity andthe service provider. The interactive program may include instructionscapable of being rendered within an Internet browser application. Themethod may further include providing result information to the secondcomputing device, where the result information is configured forpresentation upon a display of the second computing device.

In one aspect, the present disclosure describes a method includingreceiving one or more encryption algorithms and a public key, where theone or more encryption algorithms are configured to encrypt data usingthe public key to obtain encrypted data, where the encrypted data isconfigured to be decrypted using a private key paired with the publickey, and the one or more encryption algorithms and the public key areprovided by a service provider over a network, where the serviceprovider allocated the public key for use by an entity, and the serviceprovider stores the private key. The method may include generating, by aprocessor of a first computing device, a mobile device applicationincluding the one or more encryption algorithms and the public key;providing the mobile device application for download over the network;and receiving encrypted data, where the data is encrypted by the one ormore encryption algorithms and the public key by a processor of a mobilecomputing device, where the mobile device application is installed uponthe mobile computing device. The method may include forwarding theencrypted data to a second computing device, where the second computingdevice is controlled by the service provider, and the service provideris configured to decrypt the encrypted data to obtain decrypted data,and manage processing of the decrypted data to obtain a processingresult. The method may include receiving, from the second computingdevice, the processing result.

In some embodiments, the method may further include generating, by aprocessor of a third computing device, result information, where theresult information is based upon the processing result; and providing,via the network, the result information to the mobile device applicationexecuting on the mobile computing device. The first computing device maybe the third computing device.

The method may further include providing, to the second computingdevice, an indication of a processing type, where the processing type isassociated with the encrypted data, and the service provider managesprocessing of the decrypted data based upon the processing type.

BRIEF DESCRIPTION OF THE FIGURES

The foregoing and other objects, aspects, features, and advantages ofthe disclosure will become more apparent and better understood byreferring to the following description taken in conjunction with theaccompanying drawings, in which:

FIG. 1 is a block diagram of an exemplary system enabling client-sideencryption of information originating from the client;

FIG. 2A is a block diagram of an exemplary system for enablingclient-side encryption of information originating from the client in apayment processing context;

FIG. 2B is a swim lane diagram of an example operation flow through asystem, such as the system of FIG. 2A, for enabling client-sideencryption;

FIG. 3 is a swim lane diagram of an example operation flow for providingand using a wireless computing device application that enablesclient-side encryption of information;

FIG. 4 is a flow chart of an example method for enabling client-sideencryption of information originating from the client;

FIG. 5 is a block diagram of an example network environment forcollecting and manipulating transaction data at point of sale;

FIG. 6 is a block diagram of a computing device and a mobile computingdevice.

The features and advantages of the present disclosure will become moreapparent from the detailed description set forth below when taken inconjunction with the drawings, in which like reference charactersidentify corresponding elements throughout. In the drawings, likereference numbers generally indicate identical, functionally similar,and/or structurally similar elements.

DETAILED DESCRIPTION

An intermediary party may receive information from an end user. Theintermediary party may transmit at least part of the information to abackend service provider for processing. Access and/or exposure to theinformation may result in potential liability for the intermediaryparty.

In general overview, the systems and methods of the present disclosuremay enable an entity to obtain information from end users and transferat least part of the information to backend service providers withoutexposure to the underlying payload information. The entity or anintermediary party may enable computing devices operated by end users toencrypt information prior to transmission. The entity may send theencrypted information to backend service providers via an intermediaryparty, where the information may be decrypted. Because the entity andthe intermediary party receives encrypted information, notinterpretable, human-renderable, and/or plain text information, theentity may provide assurance to end users that the information issecure. Similarly, the intermediary party may provide assurance tobackend service providers that information is secure. Additionally,since the security risks regarding storage of encrypted information maybe low, the entity and/or intermediary party may store encryptedinformation to asynchronously process information received from endusers. Overall, the entity, in cooperation with the intermediary party,may alleviate the risk of undesirable exposure to received informationby entity's own members, the intermediary party's own members, or thirdparties that may access the entity's or intermediary party's systems(e.g., hackers), and leverage the gained security to manage informationprocessing.

In some examples, the systems and methods of the present disclosure maybe deployed for payment systems. A payment system (e.g., an intermediaryparty server) may receive encrypted credit card information from anentity, such as a credit card number and credit verification value(CVV), and verify with the credit card company that the card number'suser is authorized to make a purchase from the entity. Because theentity cannot access, interpret, or render the credit card information(e.g., as textual information, etc.), the entity may store the encryptedinformation in long-term memory (e.g., compact disk, hard drive) andstill comply with some of the requirements set forth by standards, suchas the Payment Card Industry (PCI) Data Security Standard (DSS). In someexamples, the systems and methods of the present disclosure may bedeployed in health care systems, thereby enabling confidential patientinformation to be transferred securely among electronic systems. Thesystems and methods of the present disclosure may be deployed forbackground investigation services. Confidential information desired fora background check, such as a person's Social Security Number, may betransferred securely among electronic systems until the informationreaches an authorized user. Applications for the systems and methodsdescribed herein are not limited to the aforementioned examples, but maybe deployed in any number of contexts, as would be understood by one ofordinary skill in the art. Contents of the background are not to beconsidered as an admission of the contents as prior art.

Referring now to FIG. 1, a system 100 for enabling client-sideencryption of information originating from the client is shown anddescribed. The system 100 includes an intermediary party server 105 incommunication with a back end processing system 110. The intermediaryparty server 105 may be in communication with entity servers 115 a, 115b (collectively, “115”). Each entity server 115 may be in communicationwith client computing devices, such as mobile computing devices 120 a,120 b, 120 c and personal computing devices 122 a, 122 b, and 122 c,which may be operated by end users.

In operation, entities may hold accounts with the intermediary party. Insome implementations, the intermediary party may provide access to alibrary 125 of security-related subprograms that may be executed by aprocessor on a computing device. The library 125 may contain encryptionsubprograms for use on client computing devices 120, 122 that may beused to transmit sensitive information. The library 125 of subprogramsmay be located on or associated with the intermediary party server 105.The entity servers 115 may access the library 125 when logged into theiraccounts. In some implementations, the entity servers 115 may obtaincopies of the library 125 of subprograms through their accounts. Theentities may store copies of the library 125 on their respective entityservers 115.

In some implementations, the library 125 of subprograms may be aJavascript library, although libraries with subprograms in otherprogramming languages may be used. In some implementations, thesubprograms of the library 125 may be executed in web browsers, such asMozilla Firefox™ offered by Mozilla Corporation of Mountain View,Calif.; Google Chrome™ offered by Google, Inc. of Mountain View, Calif.;or Safari™ offered by Apple Inc. of Cupertino, Calif. In someimplementations, the subprograms of the library 125 may be includedwithin mobile device applications provided by the entity forinstallation by a user (e.g., on a smart phone, tablet computer, orother mobile computing device).

In some implementations, each entity account may include a copy of apublic key of a keypair usable with an asymmetrical encryption algorithm(e.g., RSA, Diffie-Hellman key exchange protocol, Digital SignatureStandard (DSS), ElGamal, Paillier). The public key may be available as abase-64 encoded string, a hexadecimal encoded string, or any otherformat. An entity may copy the public key into any computer program theentity may use. In some implementations, when an entity opens an accountwith the intermediary party, the intermediary party server 105 maydeliver a copy of the public key to the respective entity server 115.

In operation, in some implementations, a user at a client computingdevice 120, 122 may access a web site associated with an entity. Theuser may visit the Uniform Resource Locator (URL) associated with theentity's web site. The client computing device 120, 122 may make aHypertext Transfer Protocol (HTTP) request over a computer network toaccess the web site.

In response, the entity server 115 may transmit a web page to the clientcomputing device 120, 122 for display. The client computing device 120,122 may view the web page using a web browser. The web page may includeHypertext Markup Language (HTML).

In some implementations, the entity's web page may include a form. Theform may include fields to receive information from a user of the clientcomputing device 120, 122. In some implementations, a portion of thefields may be configured to receive information such as the user'sbilling address, credit card number, credit card expiration date, and/orcredit card security code (e.g., credit verification value, or CVV). Insome implementations, a portion of the fields may be configured toreceive information such as the user's home address, date of birth,driver's license number, and Social Security number. In someimplementations, a portion of the fields may be configured to receiveinformation related to a person's health history. In someimplementations, a portion of the fields may be configured to receiveinformation such as a username, account password, and contactinformation (e.g. mailing address, e-mail address, mobile phone number).

In some implementations, one or more fields may be configured to receivesensitive information. Information may be sensitive if the informationis confidential (e.g., industry and/or professional standards indicatethat only designated parties should have access to the information).Information may be sensitive if a party incurs regulatory obligationsfor handling the information due to exposure to the information.Information may be sensitive if a party incurs potential liability dueto handling of and/or exposure to the information.

The web page may identify the fields that are configured to receivesensitive information, thereby identifying the fields for which receivedinformation should be encrypted. In some implementations, the web pagemay include HTML identifying fields that are configured to receivesensitive information. In some implementations, the web page may includea script tag. The script tag may identify the library 125 ofencryption-related subprograms the web page may use and the location ofthe library 125. The web page may include a copy of the public keyprovided by the intermediary party server 105.

The web page may include a control that a user may activate to submitinformation provided in the form's fields to the entity server 115(e.g., a “Submit” button). A process subprogram from the library 125 maybegin executing in the web browser on the client computing device 120,122 in response to the activation of the submission control. The processsubprogram may hook into the web page's submission process.

In some implementations, the process subprogram may obtain a value froma random number generator (e.g., a generator available through an opensource library). The process subprogram may process the value to obtainan encryption key for use with a symmetrical encryption algorithm, suchas Advanced Encryption Standard (AES) or Data Encryption Standard (DES).The web page may access an encryption subprogram from the library 125 toencrypt the values in fields that may receive sensitive informationusing the encryption key (also referred to herein as “symmetricalencryption key”).

In some implementations, the web page may include two forms with thesame fields. One of the forms may be hidden from the user (e.g., notdisplayed). The information in the hidden form may be the information tobe transmitted to the entity server 115. HTML in the displayed form mayindicate if the field is configured to receive sensitive information.The process subprogram may analyze the HTML to identify field values forencryption. If a field is not configured to receive sensitiveinformation, values in the field may be copied to the correspondingfield on the hidden form. If a field is configured to receive sensitiveinformation, values in the field may be encrypted and the encryptedvalues may be inserted in the corresponding field on the hidden form. Insome implementations, a user of the client computing device 120, 122 maynot see entered values change to their encrypted counterparts, which mayavert alarm or confusion on the part of the user.

In some implementations, the web page may include a single form. Theform may have hidden fields corresponding to the fields that receivesensitive information. In some implementations, only one of a hiddenfield or its corresponding visible field may be activated (e.g., if thevisible field is active, the hidden field may not be configured toreceive a value, and vice versa). The encryption subprogram from thelibrary 125 may encrypt a value in a field that receives sensitiveinformation. The process subprogram may deactivate the field, activatethe corresponding hidden field, and insert the encrypted value in thehidden field. The visible field may appear, e.g., grayed out. In someimplementations, a user of the client computing device 120, 122 may notsee entered values change to their encrypted counterparts.

In some implementations, the web page may include a form that may behidden and/or disabled. The web page may include code that may displayand/or enable the form. In some implementations, if the web browser on aclient computing device 120, 122 cannot execute the code that displaysand/or enables the hidden form (e.g., cannot run Javascript), the formmay remain hidden and/or disabled. In some implementations, web browsersthat cannot execute code in a particular programming language may not becapable of receiving a web page by which a user may enter sensitiveinformation (e.g., credit card number). In some implementations, the webpage may include a noscript tag indicating that the ability to execute aparticular programming language is required.

An encryption subprogram from the library 125 may encrypt thesymmetrical encryption key according to an asymmetrical encryptionalgorithm (e.g., RSA). The encryption subprogram may be configured viareceipt of the public key in the web page. The web page may send thesymmetrical encryption key to the encryption subprogram to be encryptedusing the public key.

The web page may encode the encrypted values from the fields, theunencrypted values from the fields, and the encrypted symmetricalencryption key. In some implementations, the web page may encode theinformation by serializing the information. Exemplary formats forserialization may include base 54 or hexadecimal (base 16), althoughother formats may be used. The client computing device 120, 122 may sendthe information to the entity server 115.

In other operations, the client computing device 122 (e.g., mobiledevice) may download and install a mobile device application includingalgorithms for providing user information and other data to one of theentity servers 115. For example, the user may download a mobile deviceapplication for purchasing products from a particular merchant entitymaintaining the entity server 115. The mobile device application, inthis circumstance, may include one or more algorithms for encryptingsensitive information for transmission to the entity server 115 (asdescribed above in relation to the web browser based model). Forexample, the mobile device application may include a public key and/orencryption algorithm allocated to the merchant from the intermediaryserver 105 (e.g., from the library 125). In other implementations, themobile device application may contain code for retrieving information,such as an encryption algorithm and/or public key information, from theintermediary server 105. The mobile device application may receive datafrom a user, encrypt at least a portion of the information, and supplythe information to the entity server 115 in a similar manner asdescribed above in relation to the browser based model.

The entity server 115 may store information received from clientcomputing devices 120, 122. In some implementations, the entity server115 may not receive sensitive information in interpretable, readable,and/or renderable form (e.g, plain text). Storing the encryptedinformation in persistent memory (e.g., hard drive, compact disk)presents fewer security risks and may remain within information securitystandards. Thus, the entity server 115 may not be compelled to send theinformation to the backend system 110 immediately for processing.

Storage of end user information may enable asynchronous processing. Forexample, the entity server 115 may place encrypted information in aqueue and determine the order in which information from users may beprocessed (e.g., priority, or other metrics). Thus, the client-sideencryption may result in greater flexibility for entity servers 115 tomanage information received from client computing devices 120, 122.

The entity server 115 may send information from the client computingdevice 120, 122 to the intermediary party server 105 for processing. Theentity server 115 may indicate the type of processing to be performed onthe information. In some implementations, the entity server 115 may sendthe information via an HTTP request, such as a POST request. In someimplementations, the entity server 115 may make an applicationprogramming interface (API) call to the intermediary party server 105.

In some implementations, the intermediary party server 105 may include acopy of the private key of the key pair, usable with an asymmetricalencryption algorithm, which corresponds to the public key theintermediary party server 105 has provided to account holders (e.g.,entity servers 115). The intermediary party server 105 may decryptencrypted data (e.g., values from the form fields or values collected bythe mobile application) using the private key. In some implementations,the encrypted values may not be decrypted without the private key. Insome implementations, neither the client computing devices 120, 122 northe entity servers 115 have access to the private key.

With access to interpretable (e.g., renderable, plain text, etc.)versions of all information received via the form, the intermediaryparty server 105 may process the information. Processing may create aresult. In some implementations, the intermediary party server 105 maycommunicate with the back end processing system 110 (e.g., associatedwith a third party) to process the information.

For example, the intermediary party server 105 may communicate with thebackend processing system 110, such as, e.g., a credit card company'sserver, to authorize use of the credit card number for a requesteddollar amount (e.g., the price of a good or service). If the credit cardnumber used is authorized by the credit card company's server, theintermediary party server 105 may return a result of “approved” to theentity server 115. If the number is not authorized, the intermediaryparty server 105 may return a result of “denied.” In someimplementations, the result may include a reason for the denial (e.g.,insufficient funds, invalid credit card number, invalid CVV).

In another example, the intermediary party server 105 may communicatewith the backend processing system 110, such as, e.g., backgroundinvestigation service to verify the identity of a person. Theintermediary party server 105 may decrypt information. In someimplementations, the intermediary party server 105 may send identifyinginformation in plain text to a server for a background investigationservice. In some implementations, the intermediary party server 105 mayencrypt identifying information according to an encryption algorithmused to secure information between the intermediary party server 105 andthe backend processing system 110.

In some examples, the intermediary party server 105 may send theperson's name, residential addresses for the past 5 years, SocialSecurity number, back account numbers, and driver's license number tothe back end processing system 110 for background investigation service.The back end processing system 110 may determine that the receivedinformation is consistent with the information stored in its databasefor the person and return a result of “verified” to the intermediaryparty server 105. If the received information is inconsistent with thedatabase information, the background investigation service may return aresult of “unverified.”

In any of these examples, the intermediary web server 105 may send theresult from the backend processing system 110 (e.g., credit card companyserver, background investigation server) to the entity server 115. Theentity server 115 may send a web page with the result or an indicationof the result (e.g., verified/not verified, authorized/not authorized)for display on the client computing device 120, 122. In someimplementations, the entity server 115 may log the information with anaccount of the user (e.g., accessible using the mobile applicationinstalled upon the client computing device 122). For example, the entityserver 115 may cause an alert mechanism to alert the user of the clientcomputing device 122 of the result information.

The entity server 115 may flexibly determine when and how informationshall be collected (e.g., number of forms, information to be collectedvia any given form or mobile application information entry page,organization of information to be collectively obtained through theforms or mobile application information entry pages, etc.) and whichinformation shall be encrypted. In some implementations, after theentity server 115 receives information from a browser form or mobileapplication, the entity server 115 may send another form to the clientcomputing device 120, 122 or cause the presentation of anotherinformation entry page within the mobile application. The form or entrypage may contain different fields requesting different information fromthe previously sent form.

In the circumstance of an HTML form, the form may include HTML tags orcoding flags identifying different fields that may receive sensitiveinformation. For example, the entity server 115 may send a form forregistering a user with the web site. The entity server 115 may send adifferent form to enable receipt of the user's payment information for agood and/or service. In the circumstance of a mobile application, thedata entry pages may be configured to identify information fieldsdesignated to receive sensitive information. In some implementations, atleast a portion of the information may be auto-filled using stored data.For example, user data may be collected using web browser cookies orretrieved from a user account associated with a mobile deviceapplication. Alternatively, based upon user-supplied information (e.g.,username and password, etc.) a portion of the form or mobile applicationdata entry fields may be auto populated by the entity server 115 withstored user information.

Referring now to FIG. 2A, a block diagram of an exemplary system 200 forenabling differential client-side encryption of information originatingfrom the client in a payment processing context is shown and described.In operation, a client computing device 220 controlled by a customer maybe used to order a good and/or service from an entity via a network.While placing the order, the customer may enter information into a formon a web page. The form may include fields for the customer's name,telephone number, shipping address, billing address, credit card number,and card verification value, by way of example.

The customer may activate a control to submit form data 225 to an entityserver 215 (e.g., a merchant server). Upon activation of the control, anencryption subprogram accessed by the web browser may execute on theclient computing device 220. In some implementations, the encryptionsubprogram may encrypt information such as the credit card number and/orthe card verification value. In some implementations, the encryptionsubprogram may not encrypt information such as the customer's name,telephone number, shipping address, and/or billing address.

In some implementations, the web browser may send the form data 225,including the non-encrypted customer's name, telephone number, shippingaddress, and/or billing address to the entity server 215. The entityserver 215 may access and/or store the non-encrypted information in, forexample, a persistent memory. In some implementations, the web browsermay send, within the form data 225, encrypted information 230, such ascredit card information, to the entity server 215. The entity server 215may access and/or store the encrypted information 230, for example, in apersistent memory. In some implementations, the entity server 215 maystore the encrypted information 230 on a hard drive or compact disk, byway of example. Because the entity server 215 lacks the encryption keyto decrypt the encrypted information 230, the entity server 215 may notobtain plain text values of the encrypted information 230. In someimplementations, the inability to access plain text values of creditcard information may enable the entity server 215 to store the encryptedinformation 230 without concern that the encrypted information 230 maybe decrypted and recovered by an unauthorized party.

The entity server 215 may send the form data 225, including at least aportion of the non-encrypted information as well as the encryptedinformation 230 to an intermediary party server 205 (e.g., a paymentgateway). The intermediary server 205 may run the transaction for theordered good and/or service. For example, the intermediary server 205may determine if the customer can make the payment for the good and/orservice. The intermediary server 205 may recover the credit cardinformation from the encrypted information 230 by decrypting theencrypted credit card information. The intermediary server 205 mayrequest that a backend processing system 210 (e.g., a credit cardcompany server in a credit card network) determine whether the customermay use the credit card information for the amount in the order. Forexample, the intermediary server 205 may forward credit card data 235 tothe backend processing system 210. In some implementations, the creditcard data 235 may be encrypted and/or supplied to the backend processingsystem 210 via a secure information, for example to protect the creditcard data 235 from unauthorized access.

The backend processing system 210 may receive the credit card data 235and analyze the credit card data 235 to determine whether the customermay use the credit card information for the amount in the order. Thebackend processing system 210 may send a verification result 240 a(e.g., approved, denied, etc.) back to the intermediary server 205. Theintermediary server 205 may forward the verification result 240 b resultobtained from the backend processing system 210 to the entity server215. The entity server 215 may format the verification result 240 b fordisplay at the client computing device 220. For example, the entityserver 215 may provide web page information 245 containing theverification result 240 for review by the customer on the clientcomputing device 220.

FIG. 2B is a swim lane diagram of an example operation flow 250 througha system, such as the system of FIG. 2A, for enabling client-sideencryption. The operation flow 250 illustrates example informationpassed between the intermediary server 205, entity server 215, clientcomputing device 220, and back end processing server 210, as describedin relation to FIG. 2A. In some implementations, the operation flow 250may be used to process and verify payment information for an onlinevendor. The operation flow 250, in some implementations, may be used toprocess and authenticate patient information in a health informationnetwork. In some implementations, the operation flow 250 may be used toprocess and verify background information for investigation purposes.

In some implementations, the operation flow 250 begins with accessing,through a web browser executing upon a client computing device 220, anonline entity web site (252). For example, a user may browse to the website using a web browser application. The user may access the web site,for example, to request information (e.g., patient information,background check information, etc.). In other examples, the user mayaccess the web site to purchase goods or services.

In response to accessing a request form web page (e.g., order page,patient information page, personal information identification page,etc.), the entity server 215, in some implementations, providesbrowser-renderable information including a public key for encryption ofsensitive information (254). The browser-renderable information, forexample, may include a fillable form, or a pair of fillable formsincluding a visible form and a hidden form. At least a portion of thefields of the fillable form, for example, may be configured to receivesensitive information.

In some implementations, the browser-renderable information includesinstructions for downloading an encryption algorithm provided by theintermediary server 205. In some implementations, the client computingdevice 220 downloads the encryption algorithm (256) from theintermediary server 205 via the online entity server 215. In otherimplementations, the client computing device 220 downloads theencryption algorithm directly from the intermediary server 205 (notillustrated). Although illustrated as being performed after receivingthe browser-renderable information including the public key, in someimplementations (not illustrated), the web browser 220 may havepreviously received the encryption algorithm from the intermediaryserver 205. For example, the client computing device 220 may havereceived the encryption algorithm upon logging into a user accountassociated with the entity server 215. The encryption algorithm, in someimplementations, may be associated with the public key. For example, theintermediary server 205 may associate a particular encryption algorithmwith a particular public key allocated to a particular entity.

In some implementations, the client computing device 220 (e.g., withinscripting language or other browser-executable language executing withina browser application) encrypts user data using an encryption algorithmand the public key (258). For example, the encryption algorithm may beprogrammed into a browser-executable language such as Javascriptprogramming language. In some implementations, the encryption algorithmidentifies one or more fields configured to accept sensitive informationand encrypts the information entered into those fields.

In some implementations, the client computing device transmits data,including the encrypted data, to the entity server 215 (260 a). Theencryption algorithm or another algorithm, for example, may transmitdata to the entity server 215. The encrypted data, in someimplementations, is provided to the entity server 215 separately fromunencrypted data (e.g, in a separate transmission). In addition toencryption, in some implementations, encrypted and, optionally,unencrypted data may be provided to the entity server 215 from theclient computing device 220 via a secure connection, such as a SecureSocket Layer (SSL) connection.

In some implementations, the entity server 215 forwards the encrypteddata and, optionally, a portion of the unencrypted data (e.g.,identification information such as a user name and zip code, etc.) tothe intermediary server 205 (260 b). Rather than immediately forwardingdata, in some implementations, the entity server 215 queues theencrypted data for later transmission to the intermediary server 205. Inaddition to forwarding the encrypted data, in some implementations, theentity server stores a copy of the encrypted data locally, for exampleas a temporary backup in case the initial request to the intermediaryserver 205 fails or for transaction history purposes. If the entityserver 215 stores the encrypted data locally, in some implementationsthe entity server 215 stores the information within a secure storageregion, such as a secure database.

At the intermediary server 205, in some implementations, the encrypteddata is decrypted (262). The intermediary server 205, for example, maymatch the online entity with a private key that is paired with thepublic key issued to the entity server 215. In some implementations, theprivate key is identified based in part upon a transmission signature ofthe entity server 215 (e.g., internet protocol (IP) address, domain nameserver (DNS) name, etc.). The private key, in some implementations, isidentified based in part upon header information contained within thetransmission from the entity server 215. For example, a transmissionalgorithm may embed identifying information within the transmissionprovided by the entity server 215 to the intermediary server 205 (e.g.,in step 260 b). In some implementations, the public key itself or anidentifier identifying the public key is transmitted with the encryptedinformation.

Upon decryption of the encrypted information, in some implementations,the intermediary server 205 stores at least a portion of the information(264). The information may be stored, for example, for audit purposes.

The data, in some implementations, is queued for data processing (266).Depending upon the type of data (e.g., credit card information, patientinformation, background verification information, etc.) the data may bequeued to one of a number of back end servers, including the back endserver 210. The back end server 210, in some examples, may be a medicalsystem server, credit card server, electronic payment processing server,law enforcement server, or government bureau server.

At some point in time, in some implementations, the data is forwarded bythe intermediary server 205 to the back end server 210 for processing(268). In some implementations, the data is encrypted prior totransmission to the back end server 210. The data, in someimplementations, is provided to the back end server 210 via a securetransmission or via a secure network connection.

In some implementations, at the back end server 210, the data isprocessed (270) to obtain a result. Depending upon the type of dataand/or the type of the back end server 210, the result may vary. Forexample, if the back end server 210 is a credit card payment processingserver, the result may include a status message (e.g., approved, denied,etc.).

In some implementations, the back end server 210 provides the resultrelated to processing the user data to the intermediary server 205 (272a). For example, a medical system server may provide a result of“approved” in relation to a request of a patient for clearance for aservice, procedure, or medication.

The intermediary server 205, in some implementations, forwards theresult to the entity server 215 (272 b). In some implementations, theintermediary server 205 stores the result for audit purposes (e.g.,along with the user data formerly stored at step 264).

Upon receipt of the result, in some implementations, the entity server215 processes the result (274). Processing, in some implementations, mayinclude associating the result with a previous request, for example arequest for purchase of a good. If, for example, credit card informationhas been authorized, the entity server 215 may initiate the delivery ofthe good to the user of the client computing device 220.

In some implementations, based upon the results of processing in step274, the entity server 215 provides information related to the result tothe client computing device 220 (276). For example, upon receiving anindication that credit card information has been denied, the entityserver 215 may present a message regarding the denial within the webbrowser application executing upon the client computing device 220.

Often, a significant amount of time (e.g., minutes, hours, a day, etc.)has lapsed between the transmission of the user data (at step 260 a) andprocessing of the result (at step 274). In this circumstance, ratherthan providing information related to the result to the client computingdevice 220 (e.g., within the browser application), in someimplementations, the entity server 215 identifies contact informationassociated with the user (e.g., email address, telephone number for textmessaging, social media account information, etc.). The entity server215, further to the example, may provide information related to theresult to the user using the contact information.

Although illustrated as a particular series of steps, in someimplementations, more or fewer steps may be implemented, or one or moreof the steps may be performed in a different order. For example, in someregions, a credit card payment may not be processed until day ofshipment of an order. In this circumstance, the entity server 215 mayprovide the encrypted user data to the intermediary server 205 (260 b) afirst time to verify that the credit card information is valid, and asecond time (e.g., hours or days later) to initiate processing ofpayment.

Furthermore, in some implementations, the credit card information,stored at the intermediary server 205, may be accessed for reuse, forexample based upon identifying information provided during a subsequenttransaction. For example, a shopper, upon making a subsequent purchase,may select an “on record” credit card within a payment form (e.g.,fillable form including sensitive and public data). In someimplementations, the subsequently transmitted user data (e.g., sent fromthe client computing device 220 to the entity server 215, where it isforwarded to the intermediary server 205) may include a portion of acredit card number (e.g., banking information number (BIN) plus the lastfour digits), or a flag, tag, or code recognized by the entity server215. For example, within the browser-renderable information providedwithin step 254, the entity server 215 may supply the client computingdevice 220 with partially encoded credit card information usable toidentify a particular “on file” credit card (e.g., American Express cardwith last four digits 7890). Upon selection of the “on file” creditcard, the user data transmitted at step 260 a may include the textAmerican Express and 7890 or another identifier code (e.g., uniqueidentifier) used to identify the selected “on file” credit card. Theentity server 215, in response, may forward information used to identifythe “on file” credit card to the intermediary server 205 at step 260 b.The intermediary server 205 may use the identifying information toretrieve archived credit card information. Alternatively, the entityserver 215 may archive the encrypted credit card information and forwardthe (still encrypted) credit card information to the intermediary server205 in response to recognizing the “on file” credit card identificationinformation received in the transmitted user data in step 260 a. Othermodifications of the operation flow 250 are possible.

FIG. 3 is a swim lane diagram of an example operation flow 300 forproviding and using a wireless computing device application that enablesclient-side encryption of information. The operation flow 300illustrates example information passed between a mobile computing device302 (e.g., such as the client computing devices 122 described inrelation to FIG. 1), an application store 304, an entity server 306(e.g., such as the entity servers 115 described in relation to FIG. 1),and intermediary server 308 (e.g., such as the intermediary server 105described in relation to FIG. 1). In some implementations, the operationflow 300 may be used to provide and utilize a mobile applicationaffiliated with an online vendor for purchase of goods and services asprocessed via the entity server 306. The operation flow 300, in someimplementations, may be used to provide and utilize a mobile applicationaffiliated with a health care system for authentication of patientinformation in a health information network. In some implementations,the operation flow 300 may be used to provide and utilize a mobileapplication affiliated with a law enforcement system for verificationand background information for investigation purposes.

In some implementations, the operation flow 300 begins with theintermediary server 308 providing the entity server 306 with a publicencryption key and one or more encryption algorithms (310). The publicencryption key, for example, may be paired with a private encryptionkey, maintained by the intermediary server 308. The public encryptionkey, for example, may be used to encrypt data using one or more of theencryption algorithms. At the intermediary server, the encrypted datamay be decrypted using the paired private encryption key and one or moredecryption algorithms maintained by the intermediary server 308. In someimplementations, the public key is unique to the entity server 306. Forexample, the intermediary server 308 may allocate a different public keyto each entity utilizing the services of the intermediary server 308 forsecure transmission and processing of sensitive data.

In some implementations, the entity server 306 may bundle the public keyand at least one of the security algorithms provided by the intermediaryserver 308 into a mobile device application (312). For example, adeveloper, supplied with the public key and one or more securityalgorithms, may incorporate encryption algorithms within an applicationfor the collection and secure transmission of user data. Alternatively,the mobile device application may be configured to request one or moreof a public encryption key and a security algorithm from the entityserver 306 or the intermediary server 308 at time of encryption ofsensitive data.

Upon development of the mobile device application, the entity mayprovide the mobile application for user consumption at an applicationstore (314). For example, a mobile device application developed for theiPhone™ platform may be made available for download through the Appleapplication store, while a mobile device application developed for theAndroid™ platform may be made available for download through the Googleapplication store. In other implementations, an application may beavailable for direct download and installation, for example via theentity server 306.

An end user may download the entity application from the applicationstore 304 for installation upon the mobile computing device 302 (316).For example, an entity may provide information upon a web site for auser to download an application. The application, in some examples, maybe an application for shopping with a merchant entity, an applicationfor managing patient information via a healthcare organization entity,or an application for managing background information of candidates viaa human resources support entity.

As a user interacts with the installed mobile device application usingthe mobile computing device 302, in some implementations, a user mayenter sensitive information for transmission to the entity server 306.For example, the user may be presented with a user interface includingone or more information fields for entering data related to an order,information request, or authentication request. Prior to providing theinformation to the entity server 306, the mobile computing device, insome implementations, encrypts at least a portion of the data with thepublic key and at least one of the security algorithms previouslyprovisioned to the entity server 306 by the intermediary server 308(318).

In some implementations, the encrypted data is transmitted from themobile computing device 302 to the entity server 306 (320 a). The mobiledevice application, in some implementations, is programmed tocommunicate with the entity. The encrypted data, for example, may beprovided via a secure or insecure transmission to the entity server 306.

The entity server 306, in response, may forward at least a portion ofthe user data, including the encrypted data, to the intermediary server308 (320 b). The intermediary server 308 may decrypt the user data, forexample using the private encryption key and decryption algorithm (322).As described earlier in relation to steps 262 through 272 a of FIG. 2B,for example, the data may be stored for audit purposes and provided to aback end server for processing. The back end server may supply a resultto the intermediary server 308 related to the processing of thepreviously encrypted data.

In some implementations, the intermediary server 308 supplies the resultrelated to the processing of the data to the entity server 306. Theresult, for example, may be identified for recognition by the entityserver 306 using a transaction identifier, a portion of the userinformation, or an identifier related to the end user of the mobilecomputing device. For example, upon forwarding the encrypted user datafor processing (320 b), the intermediary server 308 may receive a uniquetransaction identifier. Alternatively, in response to the receipt of theencrypted user data, the intermediary server 308 may supply the entityserver 306 with a unique transaction identifier related to the encrypteddata.

In some implementations, information related to the result may beprovided to the mobile account of the end user (326). For example, usingthe mobile computing device 302, the end user may receive the resultinformation via the mobile device application.

Although illustrated as a particular series of steps, in someimplementations, more or fewer steps may be implemented, or one or moreof the steps may be performed in a different order. Other modificationsof the operation flow 300 are possible.

FIG. 4 is a flow chart of an example method 400 for enabling client-sideencryption of information originating from the client. The method 400,for example, may be implemented by an intermediary server such as theintermediary server 105 described in relation to FIG. 1.

In some implementations, the method begins with providing an encryptionalgorithm for encrypting user data (402). The encryption algorithm, forexample, may be provided to an entity for use in encrypting sensitiveinformation.

In some implementations, a public key is allocated to an entity for usewith the encryption algorithm (404). The public key, for example, may beused in combination with the encryption algorithm. In someimplementations, the public key is paired with a private key maintainedby the allocator (e.g., the intermediary server).

In some implementations, encrypted user data encrypted with the publickey and the encryption algorithm is received (406). The entity server,for example, may forward encrypted data encrypted upon a clientcomputing device using the encryption algorithm and the public key. Insome implementations, the unencrypted user data may be included in thesame transmission as the encrypted user data.

In some implementations, the entity associated with the encrypted userdata is determined (408). An identifier identifying the entity may beprovided within the transmission of the encrypted user data, for example(e.g., within the transmission packet header or within unencrypted dataprovided with the encrypted data). In another example, the entity may beidentified by the source of the transmission (e.g., an internet protocol(IP) address, a DNS server, etc.). The public key or an identifiercorresponding to the public key, in some implementations, is providedwith the encrypted user data. The entity or the private key associatedwith the entity may be identified based upon the public key.

In some implementations, a private key associated with the entity isdetermined (410). In some implementations, a single public key has beenallocated to the entity. In this circumstance, the entity identified instep 408 may be used to uniquely identify the private key. If two ormore public keys have been allocated to an entity, in someimplementations, additional information may be analyzed to identify theprivate key. For example, a source of the information (e.g., mobiledevice application versus web page) a type of processing requested(e.g., credit card processing versus individual background verification,etc.) or a source of the transmission of the information (e.g., entitygateway, IP address, DNS name, etc.) may be considered when identifyinga private key matching the processing request.

In some implementations, the encrypted user data is decrypted using theprivate key and a decryption algorithm (412). The decrypted data, insome implementations, may be stored for audit purposes.

In some implementations, the decrypted user data is queued forprocessing with a processing engine (414). For example, based upon asource of the information, an entity associated with the information,and/or an identifier within the transmission associated with a type ofprocessing requested, the decrypted user data may be queued forprocessing with one or more back end processing servers. In someimplementations, the back end processing system is owned by a thirdparty, for example a credit card company. In other implementations, theintermediary server and the back end processor are controlled by a sameentity. If the back end processor is available immediately, thedecrypted user data may be transmitted for processing rather than beingqueued.

In some implementations, the decrypted user data is provided to theprocessing engine (416). In some implementations, a portion ofunencrypted user data, transmitted with the encrypted user data, may besupplied to the processing engine as well, for example to be used asidentifying information to provide context to the request (e.g., name,zip code, etc.). The decrypted user data, in some implementations, isprovided to the processing engine in a secure transmission. Prior toproviding the decrypted user data to the processing engine, for example,the data may be encrypted in a format recognizable by the processingengine. In another example, the decrypted user data may be provided tothe processing engine over a secure communication connection.

In some implementations, a processing result is received from theprocessing engine (418). Information contained within the result mayvary, from a boolean (e.g., approved/denied, etc.) to a rich mediaresponse (e.g., image data of fingerprints, photograph, text data,etc.). The result may vary, for example, based upon the type ofprocessing requested. The processing result may be received in real time(e.g., shortly after the decrypted user data has been provided to theprocessing engine) or at a later time. In some implementations, thetransmission including the result is identifiable based upon one or moreof a transaction identifier, user identifier, entity identifier, and/orrequest timestamp. In some implementations, upon receiving theprocessing result, the processing result is matched to a particularprocessing request.

In some implementations, the processing result is provided to the entity(420). In some implementations, in matching the processing result to theprocessing request, a response method may be identified for relaying theinformation to the requesting entity. For example, the entity may have adedicated server, gateway, transmission code, transmission style, orother preference for receiving the processing result. In someimplementations, the processing result or an indication of availabilityof the processing result may be emailed, issued by facsimile, or loggedin an account maintained for the entity by the intermediary system. Insome implementations, a portion of the request information may beprovided in the transmission containing the processing result, forexample to enable matching between the processing result and the requestat the entity.

In addition to providing the processing result, in some implementations,the method 400 may include storing the processing result, informationregarding the processing result (e.g., timestamp of receipt, timestampof forwarding to entity, indication of success of forwarding to entity,etc.) within a long term storage area. This information may be stored,for example, for audit purposes.

Although illustrated as a particular series of steps, in someimplementations, more or fewer steps may be implemented, or one or moreof the steps may be performed in a different order. Other modificationsof the operation flow 400 are possible.

As shown in FIG. 5, an implementation of an exemplary cloud computingenvironment 500 for client side encryption and secure transmission ofdata is shown and described. The cloud computing environment 500 mayinclude one or more resource providers 502 a, 502 b, 502 c(collectively, 502). Each resource provider 502 may include computingresources. In some implementations, computing resources may include anyhardware and/or software used to process data. For example, computingresources may include hardware and/or software capable of executingalgorithms, computer programs, and/or computer applications. In someimplementations, exemplary computing resources may include applicationservers and/or databases with storage and retrieval capabilities. Eachresource provider 502 may be connected to any other resource provider502 in the cloud computing environment 500. In some implementations, theresource providers 502 may be connected over a computer network 508.Each resource provider 502 may be connected to one or more computingdevice 504 a, 504 b, 504 c (collectively, 504), over the computernetwork 508.

The cloud computing environment 500 may include a resource manager 506.The resource manager 506 may be connected to the resource providers 502and the computing devices 504 over the computer network 508. In someimplementations, the resource manager 506 may facilitate the provisionof computing resources by one or more resource providers 502 to one ormore computing devices 504. The resource manager 506 may receive arequest for a computing resource from a particular computing device 504.The resource manager 506 may identify one or more resource providers 502capable of providing the computing resource requested by the computingdevice 504. The resource manager 506 may select a resource provider 502to provide the computing resource. The resource manager 506 mayfacilitate a connection between the resource provider 502 and aparticular computing device 504. In some implementations, the resourcemanager 506 may establish a connection between a particular resourceprovider 502 and a particular computing device 504. In someimplementations, the resource manager 506 may redirect a particularcomputing device 504 to a particular resource provider 502 with therequested computing resource.

FIG. 6 shows an example of a computing device 600 and a mobile computingdevice 650 that can be used to implement the techniques described inthis disclosure. The computing device 600 is intended to representvarious forms of digital computers, such as laptops, desktops,workstations, personal digital assistants, servers, blade servers,mainframes, and other appropriate computers. The mobile computing device650 is intended to represent various forms of mobile devices, such aspersonal digital assistants, cellular telephones, smart-phones, andother similar computing devices. The components shown here, theirconnections and relationships, and their functions, are meant to beexamples only, and are not meant to be limiting.

The computing device 600 includes a processor 602, a memory 604, astorage device 606, a high-speed interface 608 connecting to the memory604 and multiple high-speed expansion ports 610, and a low-speedinterface 612 connecting to a low-speed expansion port 614 and thestorage device 606. Each of the processor 602, the memory 604, thestorage device 606, the high-speed interface 608, the high-speedexpansion ports 610, and the low-speed interface 612, are interconnectedusing various busses, and may be mounted on a common motherboard or inother manners as appropriate. The processor 602 can process instructionsfor execution within the computing device 600, including instructionsstored in the memory 604 or on the storage device 606 to displaygraphical information for a GUI on an external input/output device, suchas a display 616 coupled to the high-speed interface 608. In otherimplementations, multiple processors and/or multiple buses may be used,as appropriate, along with multiple memories and types of memory. Also,multiple computing devices may be connected, with each device providingportions of the necessary operations (e.g., as a server bank, a group ofblade servers, or a multi-processor system).

The memory 604 stores information within the computing device 600. Insome implementations, the memory 604 is a volatile memory unit or units.In some implementations, the memory 604 is a non-volatile memory unit orunits. The memory 604 may also be another form of computer-readablemedium, such as a magnetic or optical disk.

The storage device 606 is capable of providing mass storage for thecomputing device 600. In some implementations, the storage device 606may be or contain a computer-readable medium, such as a floppy diskdevice, a hard disk device, an optical disk device, or a tape device, aflash memory or other similar solid state memory device, or an array ofdevices, including devices in a storage area network or otherconfigurations. Instructions can be stored in an information carrier.The instructions, when executed by one or more processing devices (forexample, processor 602), perform one or more methods, such as thosedescribed above. The instructions can also be stored by one or morestorage devices such as computer- or machine-readable mediums (forexample, the memory 604, the storage device 606, or memory on theprocessor 602).

The high-speed interface 608 manages bandwidth-intensive operations forthe computing device 600, while the low-speed interface 612 manageslower bandwidth-intensive operations. Such allocation of functions is anexample only. In some implementations, the high-speed interface 608 iscoupled to the memory 604, the display 616 (e.g., through a graphicsprocessor or accelerator), and to the high-speed expansion ports 610,which may accept various expansion cards (not shown). In theimplementation, the low-speed interface 612 is coupled to the storagedevice 606 and the low-speed expansion port 614. The low-speed expansionport 614, which may include various communication ports (e.g., USB,Bluetooth®, Ethernet, wireless Ethernet) may be coupled to one or moreinput/output devices, such as a keyboard, a pointing device, a scanner,or a networking device such as a switch or router, e.g., through anetwork adapter.

The computing device 600 may be implemented in a number of differentforms, as shown in the figure. For example, it may be implemented as astandard server 620, or multiple times in a group of such servers. Inaddition, it may be implemented in a personal computer such as a laptopcomputer 622. It may also be implemented as part of a rack server system624. Alternatively, components from the computing device 600 may becombined with other components in a mobile device (not shown), such as amobile computing device 650. Each of such devices may contain one ormore of the computing device 600 and the mobile computing device 650,and an entire system may be made up of multiple computing devicescommunicating with each other.

The mobile computing device 650 includes a processor 652, a memory 664,an input/output device such as a display 654, a communication interface666, and a transceiver 668, among other components. The mobile computingdevice 650 may also be provided with a storage device, such as amicro-drive or other device, to provide additional storage. Each of theprocessor 652, the memory 664, the display 654, the communicationinterface 666, and the transceiver 668, are interconnected using variousbuses, and several of the components may be mounted on a commonmotherboard or in other manners as appropriate.

The processor 652 can execute instructions within the mobile computingdevice 650, including instructions stored in the memory 664. Theprocessor 652 may be implemented as a chipset of chips that includeseparate and multiple analog and digital processors. The processor 652may provide, for example, for coordination of the other components ofthe mobile computing device 650, such as control of user interfaces,applications run by the mobile computing device 650, and wirelesscommunication by the mobile computing device 650.

The processor 652 may communicate with a user through a controlinterface 658 and a display interface 656 coupled to the display 654.The display 654 may be, for example, a TFT (Thin-Film-Transistor LiquidCrystal Display) display or an OLED (Organic Light Emitting Diode)display, or other appropriate display technology. The display interface656 may comprise appropriate circuitry for driving the display 654 topresent graphical and other information to a user. The control interface658 may receive commands from a user and convert them for submission tothe processor 652. In addition, an external interface 662 may providecommunication with the processor 652, so as to enable near areacommunication of the mobile computing device 650 with other devices. Theexternal interface 662 may provide, for example, for wired communicationin some implementations, or for wireless communication in otherimplementations, and multiple interfaces may also be used.

The memory 664 stores information within the mobile computing device650. The memory 664 can be implemented as one or more of acomputer-readable medium or media, a volatile memory unit or units, or anon-volatile memory unit or units. An expansion memory 674 may also beprovided and connected to the mobile computing device 650 through anexpansion interface 672, which may include, for example, a SIMM (SingleIn Line Memory Module) card interface. The expansion memory 674 mayprovide extra storage space for the mobile computing device 650, or mayalso store applications or other information for the mobile computingdevice 650. Specifically, the expansion memory 674 may includeinstructions to carry out or supplement the processes described above,and may include secure information also. Thus, for example, theexpansion memory 674 may be provide as a security module for the mobilecomputing device 650, and may be programmed with instructions thatpermit secure use of the mobile computing device 650. In addition,secure applications may be provided via the SIMM cards, along withadditional information, such as placing identifying information on theSIMM card in a non-hackable manner.

The memory may include, for example, flash memory and/or NVRAM memory(non-volatile random access memory), as discussed below. In someimplementations, instructions are stored in an information carrier. thatthe instructions, when executed by one or more processing devices (forexample, processor 652), perform one or more methods, such as thosedescribed above. The instructions can also be stored by one or morestorage devices, such as one or more computer- or machine-readablemediums (for example, the memory 664, the expansion memory 674, ormemory on the processor 652). In some implementations, the instructionscan be received in a propagated signal, for example, over thetransceiver 668 or the external interface 662.

The mobile computing device 650 may communicate wirelessly through thecommunication interface 666, which may include digital signal processingcircuitry where necessary. The communication interface 666 may providefor communications under various modes or protocols, such as GSM voicecalls (Global System for Mobile communications), SMS (Short MessageService), EMS (Enhanced Messaging Service), or MMS messaging (MultimediaMessaging Service), CDMA (code division multiple access), TDMA (timedivision multiple access), PDC (Personal Digital Cellular), WCDMA(Wideband Code Division Multiple Access), CDMA2000, or GPRS (GeneralPacket Radio Service), among others. Such communication may occur, forexample, through the transceiver 668 using a radio-frequency. Inaddition, short-range communication may occur, such as using aBluetooth®, Wi-Fi™, or other such transceiver (not shown). In addition,a GPS (Global Positioning System) receiver module 670 may provideadditional navigation- and location-related wireless data to the mobilecomputing device 650, which may be used as appropriate by applicationsrunning on the mobile computing device 650.

The mobile computing device 650 may also communicate audibly using anaudio codec 660, which may receive spoken information from a user andconvert it to usable digital information. The audio codec 660 maylikewise generate audible sound for a user, such as through a speaker,e.g., in a handset of the mobile computing device 650. Such sound mayinclude sound from voice telephone calls, may include recorded sound(e.g., voice messages, music files, etc.) and may also include soundgenerated by applications operating on the mobile computing device 650.

The mobile computing device 650 may be implemented in a number ofdifferent forms, as shown in the figure. For example, it may beimplemented as a cellular telephone 680. It may also be implemented aspart of a smart-phone 682, personal digital assistant, or other similarmobile device.

Various implementations of the systems and techniques described here canbe realized in digital electronic circuitry, integrated circuitry,specially designed ASICs (application specific integrated circuits),computer hardware, firmware, software, and/or combinations thereof.These various implementations can include implementation in one or morecomputer programs that are executable and/or interpretable on aprogrammable system including at least one programmable processor, whichmay be special or general purpose, coupled to receive data andinstructions from, and to transmit data and instructions to, a storagesystem, at least one input device, and at least one output device.

These computer programs (also known as programs, software, softwareapplications or code) include machine instructions for a programmableprocessor, and can be implemented in a high-level procedural and/orobject-oriented programming language, and/or in assembly/machinelanguage. As used herein, the terms machine-readable medium andcomputer-readable medium refer to any computer program product,apparatus and/or device (e.g., magnetic discs, optical disks, memory,Programmable Logic Devices (PLDs)) used to provide machine instructionsand/or data to a programmable processor, including a machine-readablemedium that receives machine instructions as a machine-readable signal.The term machine-readable signal refers to any signal used to providemachine instructions and/or data to a programmable processor.

To provide for interaction with a user, the systems and techniquesdescribed here can be implemented on a computer having a display device(e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor)for displaying information to the user and a keyboard and a pointingdevice (e.g., a mouse or a trackball) by which the user can provideinput to the computer. Other kinds of devices can be used to provide forinteraction with a user as well; for example, feedback provided to theuser can be any form of sensory feedback (e.g., visual feedback,auditory feedback, or tactile feedback); and input from the user can bereceived in any form, including acoustic, speech, or tactile input.

The systems and techniques described here can be implemented in acomputing system that includes a back end component (e.g., as a dataserver), or that includes a middleware component (e.g., an applicationserver), or that includes a front end component (e.g., a client computerhaving a graphical user interface or a Web browser through which a usercan interact with an implementation of the systems and techniquesdescribed here), or any combination of such back end, middleware, orfront end components. The components of the system can be interconnectedby any form or medium of digital data communication (e.g., acommunication network). Examples of communication networks include alocal area network (LAN), a wide area network (WAN), and the Internet.

The computing system can include clients and servers. A client andserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other.

In view of the structure, functions and apparatus of the systems andmethods described here, in some implementations, an apparatus and methodfor collecting and manipulating transaction data are provided. Havingdescribed certain implementations of methods and apparatus for clientside encryption and secure transmission of user data, it will now becomeapparent to one of skill in the art that other implementationsincorporating the concepts of the disclosure may be used. Therefore, thedisclosure should not be limited to certain implementations, but rathershould be limited only by the spirit and scope of the following claims.

What is claimed:
 1. A method comprising: providing, by a serviceprovider computing device, a public key to an entity computing device,wherein the service provider computing device maintains a private keypaired to the public key and the public key is associated with theentity computing device, wherein the entity computing device provides,for access by a client computing device, an interactive programconfigured to enable a processor of the client computing device toencrypt data using the public key; receiving, by the service providercomputing device, encrypted data from the entity computing device acrossa first network, wherein the processor of the client computing deviceencrypted the encrypted data using the public key, wherein the serviceprovider computing device determines the private key that is paired tothe public key and decrypts the encrypted data using the private key,and the entity computing device lacks access to the unencrypted data andthe private key; and forwarding, by the service provider computingdevice, to the entity computing device, a processing result related tothe decryption of the encrypted data.
 2. The method of claim 1, whereinthe interactive program is a mobile computing device application; andthe client computing device is a mobile computing device, wherein themobile computing device application is configurable to install upon theprocessor of the client computing device.
 3. The method of claim 1,wherein the interactive program contains instructions that, whenexecuted, cause the processor of the client computing device to encryptdata using the public key.
 4. The method of claim 2, wherein theinteractive program contains instructions that, when executed, furthercause the processor of the client computing device to download anencryption subprogram from one of the entity and the service providercomputing devices.
 5. The method of claim 1, wherein the interactiveprogram comprises instructions capable of being rendered within anInternet browser application.
 6. The method of claim 1, furthercomprising providing result information related to the processing resultto the client computing device, wherein the result information isconfigured for presentation upon a display of the client computingdevice.